In the field of computing, automated workflow tools serve an important role. Such tools can automate processes that normally would have to be performed by humans, rendering many tasks significantly less labor-intensive, and by extension, less expensive to perform. Traditionally, workflow tools have been divided into two types.
One type of tool, such as the well-known “chron” tool that is common to UNIX and UNIX-like environments, allows for unattended automation of tasks, which can include logging operations, maintenance tasks, batch jobs, any other kind of task that can be run without user interaction. But such tools, by their nature, are designed not to allow user interaction, and they are typically scheduled to run during off-hours when interactive system load is low. As such, these types of workflow tools (which more properly can be considered unattended automation tools) are designed to operate asynchronously—that is, without user presence or interaction.
The other type of workflow tool, which is common in many user applications, is designed to allow interaction with the user to customize, on a per iteration basis, the behavior of the workflow. For instance, a workflow might allow a user to choose one of several options for the next step, might allow the user to input text to be limited by the workflow, and/or the like. Simple examples of such workflows include application macros, user interface scripts, trouble ticket tracking applications, and the like. Typically, in such interactive tools, user presence is required, and the workflow cannot be performed asynchronously, because the tool must wait for user interaction before proceeding to the next step in the workflow.
Hence, there is a need for workflow tools that can both operate asynchronously and allow for user interaction to customize the workflow behavior on a per iteration basis.